package com.enjoyiot.module.system.service.sp;

import com.enjoyiot.framework.common.pojo.PageResult;
import com.enjoyiot.module.system.controller.admin.sp.vo.SpCreateReqVO;
import com.enjoyiot.module.system.controller.admin.sp.vo.SpPageReqVO;
import com.enjoyiot.module.system.controller.admin.sp.vo.SpUpdateReqVO;
import com.enjoyiot.module.system.dal.dataobject.sp.SpDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 视频地址 Service 接口
 */
public interface SpService {

    /**
     * 创建视频地址
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createSp(@Valid SpCreateReqVO createReqVO);

    /**
     * 更新视频地址
     *
     * @param updateReqVO 更新信息
     */
    void updateSp(@Valid SpUpdateReqVO updateReqVO);

    /**
     * 删除视频地址
     *
     * @param id 编号
     */
    void deleteSp(Long id);

    /**
     * 获得视频地址
     *
     * @param id 编号
     * @return 视频地址
     */
    SpDO getSp(Long id);

    /**
     * 获得所有视频地址列表
     *
     * @return 视频地址列表
     */
    List<SpDO> getSpList();

    /**
     * 获得视频地址列表
     *
     * @param ids 编号
     * @return 视频地址列表
     */
    List<SpDO> getSpList(java.util.Collection<Long> ids);

    /**
     * 获得视频地址分页
     *
     * @param pageReqVO 分页查询
     * @return 视频地址分页
     */
    PageResult<SpDO> getSpPage(SpPageReqVO pageReqVO);

    /**
     * 根据视频编号获取视频地址
     *
     * @param spNumber 视频编号
     * @return 视频地址
     */
    SpDO getSpBySpNumber(String spNumber);

    /**
     * 根据传感器编号获取视频地址列表
     *
     * @param cgqNumber 传感器编号
     * @return 视频地址列表
     */
    List<SpDO> getSpListByCgqNumber(Integer cgqNumber);
}